- 
                Notifications
    
You must be signed in to change notification settings  - Fork 8
 
feat: implement admin tags dashboard #202
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
- Add Category Management to AdminTreeNavigation - Create comprehensive category dashboard at /admin/category - Display node categories with counts in organized layout - Add breadcrumb navigation and proper admin layout - Integrate with existing admin dashboard structure 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
| 
           The latest updates on your projects. Learn more about Vercel for GitHub. 
  | 
    
          🎨 Chromatic Visual Testing Results
 Check the visual changes and approve or request changes as needed.  | 
    
… pagination - Renamed admin category page from category.tsx to categories.tsx for consistency - Implemented server-side pagination using useListAllNodes with page/limit parameters - Updated navigation links in AdminTreeNavigation and admin index page - Added CustomPagination component with URL state management - Removed client-side pagination in favor of API-level pagination 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
          🎨 Chromatic Visual Testing Results
 Check the visual changes and approve or request changes as needed.  | 
    
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements an admin category dashboard that allows administrators to view and manage node categories. The feature adds a new admin page at /admin/categories that displays all node categories with their respective node counts in a sortable format.
Key Changes
- Added Category Management navigation link and quick action button in the admin interface
 - Created a comprehensive category dashboard displaying node categories with counts
 - Added internationalization support for the new feature across multiple languages
 
Reviewed Changes
Copilot reviewed 10 out of 11 changed files in this pull request and generated 3 comments.
| File | Description | 
|---|---|
| pages/admin/index.tsx | Added Category Management quick action button to admin dashboard | 
| pages/admin/categories.tsx | Created new category management page with node category overview | 
| components/admin/AdminTreeNavigation.tsx | Added Category Management link to admin navigation tree | 
| locales/*/common.json | Added translations for category management features across all supported languages | 
        
          
                pages/admin/tags.tsx
              
                Outdated
          
        
      | .sort((a, b) => b.count - a.count) | ||
| }, [nodesData?.nodes]) | ||
| 
               | 
          ||
| const totalPages = Math.ceil((nodesData?.total || 0) / limit) | 
    
      
    
      Copilot
AI
    
    
    
      Aug 10, 2025 
    
  
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The pagination logic is incorrect. The totalPages calculation is based on total nodes, but the displayed data is categories. This will show incorrect pagination when the number of categories differs from the number of nodes.
Replace manual URL query handling with reusable usePage hook for cleaner pagination management. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
          🎨 Chromatic Visual Testing Results
 Check the visual changes and approve or request changes as needed.  | 
    
- Updated orval-generated API client with latest tag system - Renamed categories.tsx to tags.tsx to reflect new tag-based approach - Modified admin dashboard to display and manage tags instead of categories - Updated navigation links and labels throughout admin panel - Maintained backwards compatibility by falling back to category field when tags are unavailable The tag system provides more flexible classification with multiple tags per node compared to single category assignment. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Add useCallback to wrap verifyRepoPermissions function - Include all missing dependencies in useEffect dependency array - Applied Prettier formatting for consistency 🤖 Generated with Claude Code (https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
Resolved merge conflicts in: - Locale files (en, es, fr, ja, ko, ru, zh) - claim-my-node.tsx (removed duplicate imports) - generated.ts (regenerated using orval) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Previously, the /admin/tags page was showing a summary of tag counts including "Uncategorized" entries. This was confusing and not helpful. Now the page displays a proper table showing all nodes with their associated tags. Nodes without tags display "No tags" text instead of an "Uncategorized" badge. Changes: - Replaced tag summary cards with a proper table layout - Added Table component from flowbite-react - Show node names with their tags in separate columns - Display "No tags" text for nodes without tags - Removed aggregation logic that was creating "Uncategorized" entries 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Use the adminUpdateNode endpoint when editing tags_admin field to ensure proper admin privileges. Falls back to regular updateNode endpoint when only regular tags are modified. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
| 
           ✅ Admin endpoint is already being used correctly The tag management page already uses the admin update endpoint when admin_tags are modified: Code in pages/admin/tags.tsx:119-130: // If admin tags changed, use admin endpoint
if (adminTagsChanged) {
    const updatedNode: Node = {
        ...editingNode,
        tags: newTags,
        tags_admin: newAdminTags,
    }
    await adminUpdateNodeMutation.mutateAsync({
        nodeId: editingNode.id!,
        data: updatedNode,
    })
}The logic correctly detects when admin_tags change (line 109-111) and routes to the admin endpoint, while regular tag-only changes use the publisher endpoint (line 133-151).  | 
    
| 
           lets allow publisher edit their node's tags in node details page  | 
    
        
          
                pages/admin/tags.tsx
              
                Outdated
          
        
      | {t('Nodes with Tags')} | ||
| </h2> | ||
| <Badge color="info" icon={HiOutlineCollection}> | ||
| {nodesData?.total || 0} {t('nodes')} | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"1535 nodes"
this should use white text
        
          
                pages/admin/tags.tsx
              
                Outdated
          
        
      | <Table.Cell className="whitespace-nowrap font-medium text-gray-200"> | ||
| <div className="flex items-center space-x-2"> | ||
| <HiOutlineCollection className="h-4 w-4 text-blue-400" /> | ||
| <div> | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
add a open in new window button beside, go to node details page when click
Allow publishers to edit their node's tags from the node details page via the Edit modal. This gives publishers more control over how their nodes are categorized and discovered. Changes: - Add tags field to NodeEditModal for editing - Display current tags on node details page with Badge components - Parse and save tags as comma-separated values - Add helper text explaining tag usage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
| 
           ✅ Publishers can now edit tags from node details page Implemented tag editing for publishers in the node details page as requested. Publishers can now: 
 Changes in this commit (5bb25aa): 
 All CI/CD checks passing ✅  | 
    
Changed the tag management page to consistently use the admin update endpoint for all tag modifications, regardless of whether admin_tags or regular tags are changed. This simplifies the logic and ensures admin privileges are used throughout the admin interface. Changes: - Removed conditional endpoint selection logic - Removed unused useUpdateNode hook and publisher ID checks - Always use adminUpdateNode for all tag updates - Added early return for no-change scenarios 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
Resolved merge conflicts by keeping current branch changes: - Preserved tag management functionality in AdminTreeNavigation - Kept tags display in NodeDetails component - Maintained tags input in NodeEditModal - Updated all locale files with new tag-related translations - Retained admin dashboard tag management link 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
Summary
Implements the admin tags dashboard as requested in issue #57. The system has been migrated from categories to tags, allowing nodes to have multiple tags instead of a single category.
Changes Made
/admin/tagsFeatures
Test plan
/admin/tags🤖 Generated with Claude Code